Locking কি এবং এর প্রয়োজনীয়তা

Java Technologies - স্প্রিং ওআরএম (Spring ORM) Spring ORM এ Optimistic এবং Pessimistic Locking |
63
63

Locking ডাটাবেসের এমন একটি প্রক্রিয়া যা একাধিক ব্যবহারকারী বা প্রসেস যখন একই ডেটা অ্যাক্সেস বা পরিবর্তন করার চেষ্টা করে, তখন ডেটার সঠিকতা এবং সামঞ্জস্য নিশ্চিত করে। এটি বিশেষত Concurrency Control এর জন্য ব্যবহৃত হয়, যেখানে একই ডেটার উপর একাধিক অপারেশন পারফর্ম করা হয়।


Locking এর প্রকারভেদ

Hibernate এবং JPA-তে Locking প্রধানত দুই প্রকার:

১. Optimistic Locking

Optimistic Locking ধরে নেয় যে ডেটার উপর কনফ্লিক্ট খুব কম হয়। এটি কোনো লক নেয় না; বরং একটি Version বা Timestamp ফিল্ড ব্যবহার করে ডেটার সামঞ্জস্যতা যাচাই করে।

কাজের পদ্ধতি:

  • যখন একটি রেকর্ড রিড করা হয়, তখন সেই রেকর্ডের একটি ভার্সন নম্বর বা টাইমস্ট্যাম্পও রিড করা হয়।
  • আপডেট করার সময় Hibernate চেক করে যে ভার্সন নম্বর বা টাইমস্ট্যাম্প অপরিবর্তিত আছে কি না।
  • যদি অন্য কোনো ট্রানজেকশন ডেটা আপডেট করে থাকে, তাহলে OptimisticLockException থ্রো করে।

উদাহরণ:

@Entity
public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    @Version
    private int version;

    // Getters and Setters
}

২. Pessimistic Locking

Pessimistic Locking ধরে নেয় যে ডেটার উপর কনফ্লিক্ট হতে পারে এবং ডেটা রিড বা রাইট করার সময় তা লক করে রাখে।

কাজের পদ্ধতি:

  • যখন একটি রেকর্ড রিড বা আপডেট করা হয়, তখন সেই রেকর্ডকে লক করা হয়।
  • অন্য কোনো প্রসেস লক থাকা অবস্থায় সেই রেকর্ড অ্যাক্সেস করতে পারে না।
  • এটি সাধারণত Shared Lock (রিডের জন্য) এবং Exclusive Lock (রাইটের জন্য) হিসেবে কাজ করে।

উদাহরণ:

// Pessimistic Read Lock
entityManager.lock(product, LockModeType.PESSIMISTIC_READ);

// Pessimistic Write Lock
entityManager.lock(product, LockModeType.PESSIMISTIC_WRITE);

Locking এর প্রয়োজনীয়তা

১. ডেটার সামঞ্জস্যতা নিশ্চিত করা

Locking নিশ্চিত করে যে একই ডেটা একাধিক ট্রানজেকশন দ্বারা পরিবর্তিত হলে ডেটা ইনকনসিস্টেন্সি না হয়।

২. ডেটা রেস (Data Race) এড়ানো

Concurrency এর কারণে ডেটা রেস (যখন একাধিক প্রসেস ডেটা অ্যাক্সেস করে) হতে পারে। Locking এই সমস্যাগুলো প্রতিরোধ করে।

৩. ডেটার অখণ্ডতা বজায় রাখা (Data Integrity)

Locking নিশ্চিত করে যে কোনো একটি ট্রানজেকশন শেষ না হওয়া পর্যন্ত অন্য ট্রানজেকশন সেই ডেটা পরিবর্তন করতে পারবে না।

৪. Concurrency সমস্যা সমাধান করা

Locking ব্যবহার করে Dirty Read, Non-repeatable Read, এবং Phantom Read এর মতো সমস্যা প্রতিরোধ করা যায়।


Optimistic এবং Pessimistic Locking এর তুলনা

বৈশিষ্ট্যOptimistic LockingPessimistic Locking
লক প্রক্রিয়াকোনো লক নেয় না, ভার্সন বা টাইমস্ট্যাম্প ব্যবহার করেডেটার উপর সরাসরি লক প্রয়োগ করে
কনফ্লিক্টের সম্ভাবনাকম কনফ্লিক্ট থাকলে কার্যকরবেশি কনফ্লিক্ট থাকলে কার্যকর
কর্মক্ষমতা (Performance)ভালো, কারণ লক ব্যবস্থাপনা প্রয়োজন নেইবেশি রিসোর্স ব্যবহার করে
ব্যবহারের ক্ষেত্রবেশি রিড অপারেশন এবং কম কনফ্লিক্টবেশি রাইট অপারেশন এবং বেশি কনফ্লিক্ট

উদাহরণ প্রকল্প: Locking এর ব্যবহার

১. Entity তৈরি করা (Optimistic Locking সহ)

@Entity
public class Account {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private double balance;

    @Version
    private int version;

    // Getters and Setters
}

২. Pessimistic Locking এর জন্য API

@Transactional
public Account withdrawAmount(Long accountId, double amount) {
    Account account = entityManager.find(Account.class, accountId, LockModeType.PESSIMISTIC_WRITE);
    if (account.getBalance() >= amount) {
        account.setBalance(account.getBalance() - amount);
    } else {
        throw new InsufficientBalanceException("Insufficient balance.");
    }
    return account;
}

৩. Optimistic Locking Exception হ্যান্ডেল করা

@Transactional
public Account updateAccount(Account updatedAccount) {
    try {
        return accountRepository.save(updatedAccount);
    } catch (OptimisticLockingFailureException e) {
        throw new ConcurrentModificationException("The account was updated by another transaction.");
    }
}

সারাংশ

Locking একটি অপরিহার্য প্রক্রিয়া যা ডেটাবেস ট্রানজেকশন এবং কনকারেন্সি সমস্যাগুলো সমাধান করতে সাহায্য করে। Optimistic Locking এবং Pessimistic Locking এর মধ্যে পার্থক্য বুঝে প্রয়োজন অনুযায়ী ব্যবহার করলে ডেটার অখণ্ডতা এবং সামঞ্জস্যতা বজায় রাখা সহজ হয়।

Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion